function Func() {

}

// 向内置原型上扩展方法
// 1. 一个个处理比较麻烦
Func.prototype.A = function() {}
Func.prototype.B = function() {}
Func.prototype.C = function() {}

// 2. 设置别名
let protp = Func.prototype
protp.D = function() {}

/**
 * 一般想往原型上批量设置属性方法，都是基于重定向的方式
 * 1. 缺少constructor
 * 2. 缺失了原始原型对象上的属性和方法
 */

Func.prototype = {
    A: function() {},
    B: function() {}
}

/**
 * 解决批量处理的问题
 * 1. 手动设置constructor
 */


Func.prototype = {
    constructor: Func,
    A: function() {},
    B: function() {}
}


// 2. 两个原型对象合并，用新的原型对象来替换原始的原型对象（问题，如果新、老有个属性方法相同，则新值会替换老值）
Func.prototype = Object.assign(Func.prototype, {
    A: function() {},
    B: function() {}
})

// 3. 重构原型指向（把老的原型对象作为新原型对象的上级原型）

let protoNew = Object.create(Func.prototype)
protoNew = Object.assign(protoNew, {
    A: function() {},
    B: function() {}
})
Func.prototype = protoNew

console.log(protoNew)

let f = new Func;
console.log(f)




